<script charset="uft-8">

    // 函数参数解构赋值，其实就是把数组解构赋值或者对象解构赋值应用到函数参数上


    // function  fun(a,b,c){
    //     // 形参
    //     console.log(a,b,c);
    // }

    // 实参
    // fun("aaa","bbb","ccc")



    // function  fun(name="用户123456",age=0,sex="女"){

    //     // name=name || "用户123456"

    //     console.log(`我是${name}，我今年${age}岁，我是${sex}生`);

    // }


    // // 通常会先接收用户提交的数据
    // let user={
    //     // name:"张三",
    //     age:20,
    //     // sex:"男"
    // }



    // // 然后再传递参数
    // fun(user.name,user.age,user.sex)

    // // fun(,user.age,) // 既然用户没有传递姓名和性别，那么应用不用传递参数





    // // 第一次变形：
    // // 把形参当做变量  解构赋值等号的左边
    // function fun( [ name="用户123456" , age, sex="女" ]   ) {

    //     console.log(`我是${name}，我今年${age}岁，我是${sex}生`);

    // }

    // let user = {
    //     // name:"张三",
    //     age: 20,
    //     // sex:"男"
    // }


    // // 把实参当做数据 （解构赋值等号的右边）
    // fun( [  , user.age ] )





    // // 第二次变形：

    // function fun({ sex="女",age=0,name="用户123456" }) {

    //     console.log(`我是${name}，我今年${age}岁，我是${sex}生`);

    // }

    // let user = {
    //     // name:"张三",
    //     // age: 20,
    //     // sex:"男"
    // }


    // // 把实参当做数据 （解构赋值等号的右边）
    // fun( user )

    // // let  {name="zs",age,sex} =user





    // 第三次变形：最终使用的函数参数解构赋值形式

    function fun({ sex = "女", age = 0, name = "用户123456" } ={}) {

        console.log(`我是${name}，我今年${age}岁，我是${sex}生`);

    }

    let user = {
        // name:"张三",
        age: 20,
        sex:"男"
    }

    // fun(user)
    fun()
    fun({})
    fun(user)


    // let  { sex = "女", age = 0, name = "用户123456" }=







</script>